namespace Core.Contracts.Interfaces
{
    using Enums;
    using System.Collections.Generic;

    /// <summary>
    /// Extension interface contract
    /// </summary>
    public interface IExtension : IConditions, IModifiers
    {
        /// <summary>
        /// Obtains or defines the extension name
        /// </summary>
        string Name { get; set; }
        /// <summary>
        /// Obtains or defines the extension group
        /// </summary>
        ExtensionGroupsEnum Group { get; set; }
        /// <summary>
        /// Obtains or defines the extension complexity
        /// </summary>
        ushort Complexity { get; set; }
        /// <summary>
        /// Obtains or defines the extension current level
        /// </summary>
        ushort Level { get; set; }
        /// <summary>
        /// Obtains or defines the extension cost
        /// </summary>
        IExtensionCost InstallationCost { get; set; }
        /// <summary>
        /// Obtains or defines the extension description
        /// </summary>
        string Description { get; }
    }
}